<template>
  <div class="my">
    <div class="top">
      <div class="top1">
        <div class="left">
          <div class="left-name">
            {{ userInfo.nickname }}
          </div>
          <div class="left-text">
            {{ userInfo.intro }}
          </div>
        </div>
        <!-- 如果用户登录的时候有头像 就使用这个 -->
        <img
          v-if="userInfo.avatar"
          :src="baseUrl + userInfo.avatar"
          class="right"
          alt=""
          @click="goInfo"
        />
        <!-- 如果没有头像 就使用默认的头像 -->
        <img
          @click="goInfo"
          v-else
          src="@/assets/logo.png"
          class="right"
          alt=""
        />
      </div>
      <ul class="top2">
        <li class="top2-item">
          <div class="num">{{ userInfo.submitNum }}</div>
          <div class="txt">累计答题</div>
        </li>
        <li class="top2-item">
          <div class="num">{{ userInfo.systemMessages }}</div>
          <div class="txt">收藏题目</div>
        </li>
        <li class="top2-item">
          <div class="num">{{ userInfo.errorNum }}</div>
          <div class="txt">我的错题</div>
        </li>
        <li class="top2-item">
          <div class="num">0%</div>
          <div class="txt">正确率</div>
        </li>
      </ul>
      <div class="top3">
        <myCell
          class="cell"
          title="我的岗位1"
          :value="userInfo.position"
          icon="&#xe64d;"
        ></myCell>
      </div>
    </div>
    <div class="content">
      <div class="middle">
        <h3 class="middle-title">面经数据</h3>
        <ul class="middle-content">
          <li class="middle-item">
            <div class="item-top">昨日阅读<span>+1</span></div>
            <div class="item-middle">+1</div>
            <div class="item-bottom">阅读总数</div>
          </li>
          <li class="middle-item">
            <div class="item-top">昨日获赞<span>+1</span></div>
            <div class="item-middle">+1</div>
            <div class="item-bottom">获赞总数</div>
          </li>
          <li class="middle-item">
            <div class="item-top">昨日新增<span>+1</span></div>
            <div class="item-middle">
              +1
            </div>
            <div class="item-bottom">评论总数</div>
          </li>
        </ul>
      </div>
      <div class="bottom">
        <!-- 这里的数字直接使用是字符串 需要使用：进行绑定 才能解析成数值 -->
        <myCell title="我的面经分享" :value="21" icon="&#xe655;"></myCell>
        <myCell title="我的消息" :value="98" icon="&#xe656;"></myCell>
        <myCell title="收藏的题库" :value="32" icon="&#xe654;"></myCell>
        <myCell title="收藏的企业" :value="32" icon="&#xe648;"></myCell>
        <myCell title="我的错题" :value="123" icon="&#xe64f;"></myCell>
        <myCell title="收藏的面试经验" :value="166" icon="&#xe63c;"></myCell>
      </div>
    </div>
  </div>
</template>

<script>
// 组件套用组件 1导入 2 注册 3 使用
// vuex提供的mapState方法
// 在计算属性中定义这个mapState方法
/*
  computed:{
    ...mapState(['state属性'])
  }
*/
// 导入
import { mapState } from 'vuex'
import myCell from './mycell'
// import { getToken } from '@/utils/token.js'
// import { auInfo } from '@/api/my.js'
export default {
  components: {
    myCell
  },
  data () {
    return {
      baseUrl: process.env.VUE_APP_URL
    }
  },
  methods: {
    goInfo () {
      this.$router.push('/home/myInfo')
    }
  },
  mounted () {
    // 创建前 还不能访问data与methods
    document.querySelector('body').style.backgroundColor = '#f7f4f5'
  },
  destroyed () {
    // 销毁前 什么都可以访问 往往用来做一些善后工作
    document.querySelector('body').style.backgroundColor = '#ffffff'
  },
  /*
    计算属性使用场景 依赖一个或多个值产生一个新的值
    一个值一旦发生改变 计算属性的值也会随之发生改变
    定义
      computed:{
        方法名() {
          return 值
        }
      }
  */
  computed: {
    ...mapState(['userInfo', 'isLpgin '])
    // userInfo () {
    //    return this.$store.state.userInfo
    // }
    // isLogin() {
    //   return this.$store.state.isLogin
    // }
  },
  created () {
    // 只有登录用户才能访问我的页面，没有登录用户 查看有没有token 如果有 通过token获取用户信息
    /*
      如果已经登录 不用处理 直接通过
      如果没有登录
            判断有没有token
              如果有token  通过token获取用户信息
              如果没有token  直接返回登录页
    */
    // 已经在路由里边的前置守卫中做好了相关规则 这里不需要了
    // if (!this.isLogin) {
    //   // window.console.log('wo')
    //   if (getToken('token')) {
    //     auInfo().then(res => {
    //       // 保存用户信息到vuex
    //       this.$store.commit('setUserInfo', res.data.data)
    //       // 修改登录状态
    //       this.$store.commit('setIsLogin', true)
    //     })
    //   }
    // }
  }
}
</script>

<style lang="less" scoped>
.my {
  .top {
    background-color: #b8002c;
    padding: 31px @p15 0;
    position: relative;
    .top1 {
      display: flex;
      justify-content: space-between;
      .left {
        flex: 1;
        .left-name {
          font-size: 21px;
          font-family: PingFangSC, PingFangSC-Semibold;
          font-weight: 600;
          text-align: left;
          color: #ffffff;
          line-height: 30px;
          letter-spacing: 0px;
        }
        .left-text {
          opacity: 0.7;
          font-size: 12px;
          font-family: PingFangSC, PingFangSC-Regular;
          font-weight: 400;
          text-align: left;
          color: #ffffff;
          line-height: 17px;
          letter-spacing: 0px;
        }
      }
      .right {
        width: 50px;
        height: 50px;
        border: 3px solid rgba(255, 255, 255, 0.38);
        border-radius: 50%;
      }
    }
    .top2 {
      margin-top: 28px;
      padding-bottom: 55px;
      display: flex;
      justify-content: space-between;
      .top2-item {
        text-align: center;
        .num {
          font-size: 21px;
          font-family: DINAlternate, DINAlternate-Bold;
          font-weight: 700;
          text-align: center;
          color: #ffffff;
          line-height: 24px;
          letter-spacing: 0px;
        }
        .txt {
          opacity: 0.7;
          font-size: 12px;
          font-family: PingFangSC, PingFangSC-Regular;
          font-weight: 400;
          text-align: center;
          color: #ffffff;
          line-height: 17px;
          letter-spacing: 0px;
        }
      }
    }
    .top3 {
      position: absolute;
      left: 0;
      bottom: -16px;
      width: 100%;
      padding: 0 @p15;
      .cell {
        border-radius: 8px;
      }
    }
  }
  .content {
    background-color: #f7f4f5;
    padding: 26px @p15 0;
    .middle {
      background-color: #fff;
      padding: 19px 15px;
      border-radius: 8px;
      .middle-title {
        font-size: 14px;
        font-family: PingFangSC, PingFangSC-Semibold;
        font-weight: 600;
        text-align: left;
        color: #181a39;
        line-height: 20px;
        letter-spacing: 0px;
      }
      .middle-content {
        display: flex;
        justify-content: space-between;
        text-align: center;
        .middle-item {
          padding-top: 18px;
          .item-top {
            font-size: 12px;
            font-family: PingFangSC, PingFangSC-Regular;
            font-weight: 400;
            text-align: center;
            color: #b4b4bd;
            line-height: 14px;
            letter-spacing: 0px;
            span {
              color: #00b8d4;
            }
          }
          .item-middle {
            padding: 10px 0;
            font-size: 21px;
            font-family: DINAlternate, DINAlternate-Bold;
            font-weight: 700;
            text-align: center;
            color: #181a39;
            line-height: 24px;
            letter-spacing: 0px;
          }
          .item-bottom {
            font-size: 12px;
            font-family: PingFangSC, PingFangSC-Regular;
            font-weight: 400;
            text-align: center;
            color: #545671;
            line-height: 17px;
            letter-spacing: 0px;
          }
        }
      }
    }
    .bottom {
      padding-top: 10px;
      border-radius: 8px;
    }
  }
}
</style>
